{
  /*
    学习目标：索引签名类型
    注意：[key: string]: any; 不要过度使用，
  
  */

  type Props = {
    id: number;
    name: string;
    // 语法：
    // 可以使用索引签名类型, 表示可以有任意的键名与任意的值
    [key: string]: any;
  };

  const zs: Props = {
    id: 1,
    name: 'zs',
  };

  // 1. 这时候定义不上去了
  zs.gender = '男';
  zs.hobby = '女';

  // 使用场景
  // 1.React中可以定义任意属性
  type AuthRpops = {
    path: string;
    component: any;
    [key: string]: any;
  };

  function AuthRoute(props: AuthRpops) {
    const { path, component: Comp, aa, bb, ...restProps } = props;
  }

  // 2. 模拟数组的实现💥 不常用了解即可
  interface MyArray<T> {
    [index: number]: T;
  }

  const arr1: MyArray<string> = {
    0: '123',
    1: 'hello Vue',
  };

  const arr2: MyArray<number> = {
    0: 123,
    1: 123,
  };

  // 跳进去Array就是这么实现的
  Array<string>


}
